// 缓存Cookie
import Cookies from "js-cookie"
// Cookies存储
// 1.存入的名称
// 2.存入的值
// 存入的值必须是基本数据类型 最好是String
// 如果是Object或者是Array需要 JSON.stringify()
// 3.存入的时间 （保存保存的事件 一般来说保存时间是7天或者是30天）
// 但是产品经理如果有特殊的时间我们需要根据产品走
// 隐藏面试题:怎么解决Cookie的跨域问题
// (1)我们使用node.js搭建的本地服务所以Cookie不存在跨域
// (2)如果不使用node.js服务 我们需要nginx代理转发才能解决
// 存 Cookie（缓存） 
// Cookies.set(存储的名字 ， 存储的值 ，存储的天数 {expires:天数})
// SetCookie(名字 , 存的值)
export const SetCookie = (name , Cookie)=>{
    Cookies.set( name ,Cookie ,{expires:7})
}
// 取Cookie GetCookie =（取需要的缓存Cookie的名字）
// Cookie.get("需要获取的缓存名字")
export const GetCookie =name=>Cookies.get(name)
// Cookies.remove("需要删除的缓存名字")
// 删缓存Cookie RemoveCookie=（需要删除的缓存Cookie的名字）
export const RemoveCookie = (name)=>{
    Cookies.remove(name)
}
// sessionStorage 特性页面关闭后就没了 所以项目中一般不用
// localStorage 本地存储 存储大型数据 以及 用户不好删除的数据
// 存缓存 name存的名字 obj存的数据
export const setStore = (name , obj) =>{
    // window.localStorage.setItem 存本地存储 （缓存的名字 ，缓存的数据）
    window.localStorage.setItem(name ,obj)
}
// 取缓存
// getStore=需要取得缓存名字 => window.localStorage.getItem获取本地存储 （获取的名字）
export const getStore=name=>window.localStorage.getItem(name)
// 防null处理
// 我们不知道后端返回的数据是多少级对象或者数据 所以我们要递归
// 如果是值是null就变成{} 如果值是"null"就变成""
export const setnullString = (resp) =>{
    // resp就是后端返回数据对象
    for(let i in resp){
        if(resp[i] && typeof(resp[i]) =="object"){
            setnullString(resp[i])
        }else{
            // 基本数据类型或者是 null
            if(resp[i] == "null"){
                resp[i] =""
            }else if(resp[i] === null){
                    resp[i] ={}
            }
        }
    }
    return resp
}
// 递归路由
export const RouterRec=(data ,num)=>{
    // 返回的路由数组 num的计数器
    const routesObjList = [];//home的路由的children
    console.log(data);
    console.log(num)
    // 
    for(const rou of data){
        if(rou.children && rou.children.length>0){
            // 有下一级菜单
            if(num ==1){
                routesObjList.push({
                    path:`/${rou.path}`,
                    name:rou.path,
                    component:()=>import(`@/page/${rou.path}/${rou.path}`),
                    redirect:`/${rou.path}/${rou.children[0].path}`,
                    children:RouterRec(rou.children , rou),
                    authName:rou.authName
                })
            }else{
                console.log(`/${num.path}/${rou.path}`)
                routesObjList.push({
                    path:`/${num.path}/${rou.path}`,
                    name:rou.path,
                    authName:rou.authName,
                    component:()=>import(`@/page/${num.path}/${num.path}${rou.path}`),
                })
            }
        }else{
            routesObjList.push({
                path:`/${num.path}/${rou.path}`,
                name:rou.path,
                authName:rou.authName,
                component:()=>import(`@/page/${num.path}/${num.path}${rou.path}`),
            })
        }
    }
 return routesObjList
}